
let fs = require('fs');
let path = require('path');



let BUFFER_SIZE = 3;
let buf = Buffer.alloc(BUFFER_SIZE);
var readOffset = 0;

fs.open(path.join(__dirname, 'test', 'demo1.txt'), 'r', 0666, function (err, readFd) {
   fs.open(path.join(__dirname, 'test', 'demo2.txt'), 'w', (err, writeFd) => {
     function read() {
       fs.read(readFd, buf, 0, BUFFER_SIZE, null, (err, bytesRead) => {
         if (bytesRead>0){
            fs.write(writeFd, buf, 0, bytesRead, read);
         }else{
            fs.close(readFd,()=>{})
            fs.close(writeFd, () => {})
         }
       });
     }
     read()
   })
});

// buffer 是数据（ 从 fd 读取） 要被写入的 buffer。
// offset 是 buffer 中开始写入的偏移量。
// length 是整数， 指定要读取的字节数。
// position 参数指定从文件中开始读取的位置。 如果 position 为 null， 则从当前文件位置读取数据， 并更新文件位置。 如果 position 是整数， 则文件位置会保持不变。


// 写入 buffer 到 fd 指定的文件。 如果 buffer 是普通的对象， 则它必须具有自身的 toString 函数属性。
// offset 决定 buffer 中要被写入的部位， length 是整数， 指定要写入的字节数。
// position 指定文件开头的偏移量（ 数据要被写入的位置）。 如果 typeof position !== 'number'，
// 则数据会被写入当前的位置。 参见 pwrite(2)。